From: Chao Peng Date: Tue, 14 Apr 2015 13:00:44 +0000 (+0200) Subject: x86: clean up psr boot parameter parsing X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~3438 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=364aa90a5461050ac18eddf239ea1315d351d47f;p=xen.git x86: clean up psr boot parameter parsing Change type of opt_psr from bool to int so more psr features can fit. Introduce a new routine to parse bool parameter so that both cmt and future psr features like cat can use it. Signed-off-by: Chao Peng Reviewed-by: Andrew Cooper --- diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c index 2ef83df982..344de3cb6a 100644 --- a/xen/arch/x86/psr.c +++ b/xen/arch/x86/psr.c @@ -26,11 +26,30 @@ struct psr_assoc { }; struct psr_cmt *__read_mostly psr_cmt; -static bool_t __initdata opt_psr; +static unsigned int __initdata opt_psr; static unsigned int __initdata opt_rmid_max = 255; static uint64_t rmid_mask; static DEFINE_PER_CPU(struct psr_assoc, psr_assoc); +static void __init parse_psr_bool(char *s, char *value, char *feature, + unsigned int mask) +{ + if ( !strcmp(s, feature) ) + { + if ( !value ) + opt_psr |= mask; + else + { + int val_int = parse_bool(value); + + if ( val_int == 0 ) + opt_psr &= ~mask; + else if ( val_int == 1 ) + opt_psr |= mask; + } + } +} + static void __init parse_psr_param(char *s) { char *ss, *val_str; @@ -44,21 +63,9 @@ static void __init parse_psr_param(char *s) if ( val_str ) *val_str++ = '\0'; - if ( !strcmp(s, "cmt") ) - { - if ( !val_str ) - opt_psr |= PSR_CMT; - else - { - int val_int = parse_bool(val_str); - if ( val_int == 1 ) - opt_psr |= PSR_CMT; - else if ( val_int != 0 ) - printk("PSR: unknown cmt value: %s - CMT disabled!\n", - val_str); - } - } - else if ( val_str && !strcmp(s, "rmid_max") ) + parse_psr_bool(s, val_str, "cmt", PSR_CMT); + + if ( val_str && !strcmp(s, "rmid_max") ) opt_rmid_max = simple_strtoul(val_str, NULL, 0); s = ss + 1;